<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>链式操作</title>
</head>
<body>

<script>
// const promise = new Promise((resolve,reject) => {
//     resolve("后盾人");
// });
// promise.then(hd => {
//     hd += " -hdcms";
//     console.log(hd);
// });
//
//
// promise.then(hd => {
//     hd += '-houduren';
//     console.log(hd);
// });


    // const promise = new Promise((resolve,reject) => {
    //     resolve("后盾人");
    // });
    //
    // console.log(promise.then(hd => {
    //     hd += '-hdcms';
    //     console.log(hd);
    // }));

    /*
    * promise中的then方法可以链接执行,then方法的返回值可以传递到下一个then方法
    * then会返回一个promise,所有有多个then的时候会连续执行
    * then 返回的值会作为当前promise的结果
    * 每个then都会返回promise
    * */
    // new Promise((resolve,reject) => {
    //     resolve("后盾人");
    // })
    // .then(hd => {
    //     hd += "-hdcms";
    //     return hd;
    // })
    // .then(hd => {
    //     hd += '-houdunren';
    //     console.log(hd);//后盾人-hdcms-houdurnen
    // })
    // ;

    /*
    * then方法可以返回一个promise对象，等promise执行结束后，才会继续执行后面的then
    * 后面的then方法就是对新返回的promise状态的处理
    * */
    // new Promise((resolve,reject) => {
    //     resolve("第一个promise");
    // })
    // .then(msg => {
    //     console.log(msg);
    //     return new Promise((resolve,reject) => {
    //         setTimeout(()=>{
    //             resolve('第二个promise');
    //         },3000);
    //     });
    // })
    // .then(msg => {
    //     console.log(msg);
    // })
    // ;


    //链式加载
    //使用promise链式操作重构前面章节中的文件加载,使用代码会变得更加清晰
    function load(file) {
        return new Promise((resolve,reject) => {
            const script = document.createElement('script');
            script.src = file;
            script.onload = () => resolve(script);
            script.onerror = () => reject();
            document.body.appendChild(script);
        });
    }

    load('../js/promiseAjax.js')
    .then(() => load("../js/houdunren.js"))
    .then(() => houdunren())
    ;


</script>

</body>
</html>